package handler

import (
	"fmt"
	"gin-admin/controller"
	"gin-admin/model"
	"gin-admin/param"
	"net/http"

	"github.com/gin-gonic/gin"
)

//GetUser 获取用户列表
//@Tags 用户接口
//@summary 获取用户列表
//@Description 描述
//@Accept application/json
//@Produce json
//@Param object query param.UserParam true "当前页数"
// @Success 200 {object} model.JSONResult "ok"
// @Failure 400 {object} model.JSONResult "We need ID!!"
// @Failure 404 {string} string "Can not find ID"
//@Router /user/list [get]
func GetUser(context *gin.Context) {
	fmt.Println(context.ContentType())

	key := context.GetInt("userid")
	fmt.Println("获取中间件设置的值：userid=", key)
	var param param.UserParam
	var rtn model.JSONResult
	// 如果http 请求Content-Type 格式为application/json ，这里不管是get请求还是post 请求都使用BindJSON
	// BindJSON 这种与参数绑定声明可以指定类型，比如int 类型，不需要我们自己在转换
	error := context.BindQuery(&param)
	if error != nil {
		rtn.Code = 10001
		rtn.Msg = error.Error()
	} else {
		// 调用自己定义的方法，返回值始终带个error
		list, _ := controller.GetUserList(param.Page, param.PageSize, param.Name)
		rtn.Code = 10000
		rtn.Data = list
	}
	context.JSON(http.StatusOK, rtn)
}

//AddUser 添加用户
//@Tags 用户接口
//@summary 添加用户
//@description 添加用户
//@Router /user/add [post]
func AddUser(context *gin.Context) {
	context.JSON(http.StatusOK, model.JSONResult{
		Code: 10000,
		Msg:  "添加成功",
	})
}
